var R = require('ramda');

var Container = function(x) {
  this.__value = x;
}

Container.of = function(x) {
  return new Container(x)
}

Container.prototype.map = function (f) {
  return Container.of(f(this.__value))
}

// 第一个 functor
// 将 map 中传递的函数应用到值上，返回另一个 Container
// 把值装到容器里面，只能通过 map 进行处理
// var x = Container.of(2).map(function(two){ return two + 2 })
// console.dir(x)

// var map = R.curry(function(f, any_functor_at_all) {
//   return any_functor_at_all.map(f);
// });

// var addTwo = map(function(x) {return x + 1024})
// addTwo(Container.of(1024))
